package com.sxf.core.validator;


import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 
 * @description: 字符串包含判定校验
 * @author: zhangyb@ccccit.com.cn 
 * @date: 2021年1月6日 下午2:51:58
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {AllowedStringValidator.class})
public @interface AllowedString {

	String message();

	Class<?>[] groups() default {};

	Class<? extends Payload>[] payload() default {};

	/**
	 * 根据枚举类型校验是否属于有效字符串 {@link ValidStringType} 如与values() 同时存在 同时校验
	 * @return 枚举类class
	 */

	Class<? extends ValidStringType> allowedEnumClass() default ValidStringType.class;

	/**
	 * 根据数组校验是否属于有效字符串 如与validByEnumClass() 同时存在 同时校验
	 * @return 字符串数组
	 */

	String[] values() default {};

	/**
	 * 校验时是否需要包含null
	 * @return 校验时是否需要包含null
	 */
	boolean checkNull() default true;
}
